package com.zhdl.network.service;

/**
 * 串口-电机运动指令
 */
public interface MotorService extends BaseInstructionService {

    /**
     * 设置转速
     */
    void setWheelRatio(String address);

    /**
     * 读取电机状态 - 速度和位置
     * 速度：unitBuff 前两字节 电机 后四字节
     */
    void motorReadStatus();

    void motorReadLocation();

    void motorReadArriveZero();

    /**
     * 电机找原点
     */
    void motorWriteZero();

    /**
     * 电机回原点
     */
    void motorWriteHome();


    /**
     * 发送指令
     */
    void sendCmd(String cmd);

    /**
     * 伺服使能
     */
    void motorWriteReady();

    /**
     * 电机移动
     */
    void motorWriteRun();

    /**
     * 电机停止运动
     */
    void motorWriteStop();


    /**
     * 电机移动距离
     */
    void setMoveDist(String address, int moveDist);

    /**
     * Write06 写单个寄存器
     *
     * @param address 地址
     * @param value   步数
     */
    void write06(String address, int value);

    /**
     * 电机当前绝对位置(H0b.07)均与机械原点偏移量(H05.36)
     */
    void readOriginDistance();

    /**
     * 除渣电机-设置伺服使能
     */
    void motorWriteSlagReady(String slaveStationId);

    /**
     * 除渣电机-设置电机移动 伺服使能+电机开始多端运动
     * 仅供测试
     */
    void motorWriteSlagRun(String slaveStationId);

    /**
     * 除渣电机-设置电机停止运动
     */
    void motorWriteSlagStop(String slaveStationId);

    /**
     * 除渣电机找原点
     */
    void motorWriteSlagZero(String slaveStationId);

    /**
     * 读取除渣电机-当前绝对位置
     */
    void motorReadSlagLocation(String slaveStationId, String address);

    /**
     * 除渣电机-电机移动距离
     *
     * @param moveDist 移动距离
     */
    void setSlagMoveDist(String slaveStationId, String address, int moveDist);

    void writeSlag06(String slaveStationId, String address, int value);

    /**
     * 电机当前绝对位置(H0b.07)均与机械原点偏移量(H05.36)
     */
    void readSlagOriginDistance(String slaveStationId);
}
